001 /* 002 * Copyright 2004 Niclas Hedhman. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.transit.monitor; 020 021 import java.net.URI; 022 import java.net.URL; 023 024 import java.lang.reflect.Constructor; 025 026 /** 027 * Defintion of a repository monitor. 028 * 029 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a> 030 * @version 1.0.1 031 */ 032 public interface RepositoryMonitor extends Monitor 033 { 034 /** 035 * Handle notification of an information message. 036 * @param info the message 037 */ 038 void sequenceInfo( String info ); 039 040 /** 041 * Handle notification of a request for the establishment of a plugin. 042 * @param parent the parent classloader 043 * @param uri the requested plugin uri 044 * @param args the supplied constructor arguments 045 */ 046 void getPluginRequested( ClassLoader parent, URI uri, Object[] args ); 047 048 /** 049 * Handle notification of the establishment of a plugin class. 050 * @param pluginClass the plugin class 051 */ 052 void establishedPluginClass( Class pluginClass ); 053 054 /** 055 * Handle notification of an exception related to plugin establishment. 056 * @param methodname the method raising the exception 057 * @param e the causal exception 058 */ 059 void exceptionOccurred( String methodname, Exception e ); 060 061 /** 062 * Handle notification of the discovery of a plugin constructor. 063 * @param constructor the constructor 064 * @param args the constructor args 065 */ 066 void pluginConstructorFound( Constructor constructor, Object[] args ); 067 068 /** 069 * Handle notification of the instantiation of a plugin. 070 * @param pluginInstance the plugin instance 071 */ 072 void pluginInstantiated( Object pluginInstance ); 073 074 /** 075 * Handle notification of the creation of a new classloader. 076 * @param type the type of classloader (api, spi or impl) 077 * @param classloader the new classloader 078 */ 079 void classloaderConstructed( String type, ClassLoader classloader ); 080 081 /** 082 * Handle notification of system classloader expansion. 083 * @param plugin the uri of the plugin requesting system classloader expansion 084 * @param urls the array of urls added to the system classloader 085 */ 086 void systemExpanded( URI plugin, URL[] urls ); 087 }